"""API 环境设置相关文件"""
from pydantic_settings import BaseSettings, SettingsConfigDict


class ApiSettings(BaseSettings):
    """
    API 管理服务器设置的模型.

    - 实际环境变量的值为 .env 可以从文件中设置.
    - .env 如果文件丢失或没有值, ApiSettings使用类的默认值.
    """
    # 要阅读 .env 我们声明文件的设置.
    model_config = SettingsConfigDict(
        env_file='.env',
        env_file_encoding='utf-8',
        extra='ignore',  # extra=forbid (default)
        frozen=True  # 设置不更改的值.
    )

    API_VERSION: str = "v1"

    AUTH_ALGORITHM: str = "HS256"  # JWT 算法
    AUTH_ISSUER: str = "g6_rest_api"  # JWT 发证人
    AUTH_AUDIENCE: str = "g6_rest_api"  # JWT 目标人

    ACCESS_TOKEN_EXPIRE_MINUTES: float = 30
    REFRESH_TOKEN_EXPIRE_MINUTES: float = 60 * 24 * 14  # 14 days

    # JWT Secret Key
    # 为了安全 .env您必须为文件设置环境变量.
    ACCESS_TOKEN_SECRET_KEY: str = "access_token_secret_key"
    REFRESH_TOKEN_SECRET_KEY: str = "refresh_token_secret_key"


api_settings = ApiSettings()
